A plug-in-application recipe (“PIAR”) is a set that includes a triggering event (referred to herein as a “trigger” or “trigger condition”) and an action, arranged logically as an if-then formulation. The “if” portion of the formulation corresponds to a PIAR trigger condition. The “then” portion of the formulation is conditioned on the “if” portion being satisfied, and corresponds to a triggerable action. A plug-in application may supply the action. A plug-in application that supplies an action may be the same as, or different than, a plug-in application that supplies a trigger.
A PIAR management system presents an interface that allows a user to define PIARs. A PIAR definition indicates one or more actions to be executed by the PIAR management system. A PIAR definition further indicates a trigger of a plug-in application. When a PIAR management system detects that a trigger condition is satisfied, the PIAR executes the action(s) corresponding to the detected trigger.
The term “plug-in application” refers to the fact that an application's trigger(s) and/or action(s) logically ‘plug in’ to the PIAR and thus become part of the logic of a PIAR. For example, PIAR management systems may be organized such that several independent services are plugged into the PIAR management application. A plugged-in service may provide monitoring service(s) specific to a particular application to support trigger(s) for the particular application. Alternatively or in addition, a plugged-in service may provide action service(s) specific to the particular application to support action(s) for the particular application. Services may communicate through application programming interfaces (APIs). In the present disclosure, a plug-in application may also be referred to as a “third-party application” (for plug-in applications supplied by third parties) or simply an “application,” which is understood to be a plug-in application by virtue of the context that it is supplying a triggering condition and/or executing an associated action of a PIAR.
An API is a set of tools and protocols that allows services to function and interact with one another. An API may facilitate communication between a server and a client or between different applications and/or services, such as a desktop application and a web service. An API may include routines and protocols to specify how components interact. An API may expose information, allowing data to be retrieved from an application. For example, an email application's API may expose contact information. Another application may use the API to retrieve the exposed contact information. For example an API may support a HTTP GET operation. Many different types of APIs exist that may or may not rely on HTTP-related protocols.
Representational State Transfer (REST) is a resource-based API architecture. A REST API associates an endpoint with a particular resource, such as a product or user. REST responses can be cached, which improves performance and scalability. Also improving scalability, REST API connections may occur through several communication layers. Use of communication layers may prevent a client from distinguishing whether the client is directly connected to the application server or to an intermediary agent that relays the information. REST operations are inherited from HTTP, making REST operations relatively easy for both developers and web-browsers to consume. Thus, REST has a simplicity that makes REST APIs very popular. One or more embodiments described herein may include one or more plug-in applications exposing REST APIs.
A PIAR management application may be used for many purposes. For example, a PIAR management application may be used to automate repetitive tasks. As an example, a PIAR may involve, responsive to detecting that a user's car is in the user's driveway (trigger), opening the user's garage door (action). In this example, an exposed API for Android phones provides Global Positioning System (GPS) coordinates of a smart phone that might be in a user's car. When the phone is in the user's car and the phone's GPS coordinates are proximate to the garage door, the triggering event occurs. A smart switch may be wired in-line with a physical garage door opener. An exposed API for the smart switch, when toggled, may cause the smart switch to open the garage door. As another example, a PIAR may involve, responsive to determining that a user's walked steps have not reached a particular goal by 5 p.m. (trigger), transmitting a notification to the user (action). In this example, the GPS coordinates of an iPhone, via an exposed API, are determined and used to calculate the user's steps taken. At 5 p.m., if the calculated number of steps is less than the goal, the triggering event occurs. A service on the iPhone generates a push notification as the corresponding action. As another example, a PIAR may involve, responsive to detecting a new sales contact in an address book or email (trigger), creating a new spreadsheet entry to store information about the sales contact (action). In this example, an exposed API in Gmail is used to identify the keyword “sales” in any email. The exposed API is further used to retrieve the sender's email address when the keyword “sales” is found in an email. The sender's email address is compared with the PIAR user's Gmail address book. If the sender's email address is not in the PIAR user's Gmail address book, then the triggering event occurs. A new spreadsheet entry is created in Excel, by transmitting sender data copied from metadata of the triggering email and pasting the data into a prescribed Excel spreadsheet cell. In general, a PIAR may involve a series of one or more actions, executed responsive to one or more triggers, that result in functionality not natively supported by any of the plug-in applications in isolation.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.